﻿using System;
using System.Threading;

namespace 原子操作
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int counter = 0;

            Thread t1 = new Thread(()=>
            {
                for (int i = 0; i < 10; i++)
                {
                    Interlocked.Increment(ref counter); // 原子地增加counter的值
                }
            });

            Thread t2 = new Thread(() =>
            {
                for (int i = 0; i < 10; i++)
                {
                    Interlocked.Increment(ref counter); // 原子地增加counter的值
                }
            });

            t1.Start();
            t2.Start();

            t1.Join();
            t2.Join();

            // 本来的目标是20，实际的目标是：20
            Console.WriteLine($"counter:{counter}");
        }
    }
}
